#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "GameModel.h"
#include <QObject>

#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonValue>

#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QNetworkRequest>//pro 记得添加network
#include <QDebug>
#include <QVector>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE


typedef struct {

    int x = 0,y = 0,color = 0;//坐标以及棋子颜色
}
operationModel;



class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    GameType temtype = AI;
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    void initGame(); //初始化
    void typem()//几个函数定义了当前的游戏模式
    {
       temtype = MAN;
    }
    void typea()
    {
       temtype = AI;//没有加ai模块所以这里会跳转到人人对战
    }
    void typen()
    {
       temtype = net;
    }
    void typew()
    {
      temtype = MAN ;
    }

    GameModel* game = NULL; //游戏指针
private:
    Ui::MainWindow *ui;

    int temclickPosCol,temclickPosRow;   //暂时储存下棋坐标
    bool isUploading = false,Uploaded = true;
    operationModel operation ;
    int myColor = 0;
    GameType game_type = AI;  //游戏类型，作为中间参量
    int clickPosRow,clickPosCol; //纯村点击的位置
    bool selectPos;  //判断鼠标是否在棋盘上的合适的位置

    QString userID;
    QNetworkAccessManager * manager;
    QNetworkRequest request;

    void paintEvent(QPaintEvent* event);

    void mouseMoveEvent(QMouseEvent* event);
    void mouseReleaseEvent(QMouseEvent* event);
    void chessOneByPerson();
    void chessOneBynet();

private slots:
    void chessOneByAI();//ai下棋
   // 定时执行的update函数，用于拉取服务器端所有的操作记录
    void updateData();
   // void on_pushButton_clicked();
    // 定时执行的update函数，用于拉取服务器端所有的操作记录
   // void update1();
};
#endif // MAINWINDOW_H
